﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DotConferenceCore.GestionParticipant;
using DotConferenceSql;

namespace WebInterface
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if( !IsPostBack )
                RemplirEvaluateur();

            if( IsPostBack )
            {
                
                if( DropDown_Evaluateur.SelectedIndex != -1)
                    if( DropDown_Evaluateur.SelectedValue != "0")
                        RemplirEvaluation();
            }
        }
        private void RemplirEvaluateur()
        {
            
            if( !IsPostBack )
                DropDown_Evaluateur.Items.Clear();
            
            // Ajoute un item vide
            DropDown_Evaluateur.Items.Add(new ListItem(string.Empty , Convert.ToString(0) ));

            // Rempli le DropDown avec tout les évaluateurs
            using(var query = new DotConferenceSql.SqlQuery())
            {

                var selectPart = new DotConferenceSql.SelectQueryElement();


                selectPart.Add("NumeroParticipant");
                selectPart.Add("Prenom");
                selectPart.Add("Nom");

                query.Elements.Add(selectPart);
                query.Elements.Add(new DotConferenceSql.FromTableQueryElement("Participant"));
                
                // Spécifie le type de participant pour avoir seulement les évaluateurs
                query.Elements.Add( new DotConferenceSql.CustomWhereStatement(string.Format("TypeParticipant={0}", (int)DotConferenceCore.GestionParticipant.Participant.TypeParticipant.Evaluateur)));

                var selectCommand = query.BuildSqlCommand();

                try
                {
                    var dReader = selectCommand.ExecuteReader();

                    if (dReader != null)
                    {
                        while( dReader.Read() )
                        {
                            var item = new ListItem(string.Format("{0} {1}", dReader["Prenom"], dReader["Nom"]), dReader["NumeroParticipant"].ToString());
                            DropDown_Evaluateur.Items.Add(item);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Response.Write(ex.ToString());
                }

                
            }
            
        }

        private void RemplirEvaluation()
        {

            string idEvaluateur = DropDown_Evaluateur.SelectedValue;

            using( var query = new DotConferenceSql.SqlQuery() )
            {
                var selectPart = new DotConferenceSql.SelectQueryElement();

                selectPart.Add("Date");
                selectPart.Add("Sujet");
                selectPart.Add("Contenu");
                selectPart.Add("Rapport");
                selectPart.Add("Note");

                query.Elements.Add(selectPart);

                query.Elements.Add( new DotConferenceSql.FromTableQueryElement("RapportEvaluation") );
                query.Elements.Add(new DotConferenceSql.InnerJoinQueryElement("Article", "Article.ID_Article=RapportEvaluation.ID_Article"));
                
                query.Elements.Add(new DotConferenceSql.CustomWhereStatement(string.Format("ID_Evaluateur={0}", idEvaluateur)));

                var command = query.BuildSqlCommand();

                try
                {
                    var dReader = command.ExecuteReader();

                    if (dReader != null)
                    {
                        RepeaterEvaluation.DataSource = dReader;
                 
                        RepeaterEvaluation.DataBind();

                        dReader.Close();
                    }
                    
                }
                catch (Exception ex)
                {
                    Response.Write(ex.ToString());
                }

                
            }

        }
    }
}
